#!/bin/bash
# 利用Gitee自动打包热更新文件示例

echo "[UNI-APP] 正在清空缓存文件"
git config --global credential.helper store

# 工作目录
WORKDIR="/www/wwwroot/127.0.0.1/gitee"
REPO="git@gitee.com:moleft/customer-app-node.git"

mkdir -p $WORKDIR

echo "[UNI-APP] 缓存文件已清空"
# 清空项目
rm -rf "${WORKDIR}/repo"
echo "[UNI-APP] 开始克隆代码仓库"
# 克隆项目
git clone $REPO "${WORKDIR}/repo" > /dev/null || exit
echo "[UNI-APP] 代码仓库克隆完成"
echo "[UNI-APP] 正在安装项目依赖"
# 更新npm
npm install -g npm > /dev/null
# 安装依赖
cd "${WORKDIR}/repo" || exit
npm install --loglevel error > /dev/null || exit

echo "[UNI-APP] 项目依赖安装完成"
echo "[UNI-APP] 开始编译项目代码"
# 编译项目
npm run build:app > /dev/null || exit
echo "[UNI-APP] 项目代码编译成功"

echo "[UNI-APP] 获取软件更新版本"
LAST_VERSION=$(php "${WORKDIR}/generate_version.php")
echo "[UNI-APP] 软件版本号为：${LAST_VERSION}"

echo "[UNI-APP] 正在打包热更新文件"
# 假设manifest.js位于项目根目录下
MANIFEST_FILE="${WORKDIR}/repo/dist/build/app/manifest.json"

# 读取CI_COMMIT_TAG环境变量，并去除前缀'v'（如果有的话）
VERSION="${LAST_VERSION#v}"
# 提取版本号中的数字部分作为buildNumber（这里简单地移除了所有非数字字符）
BUILD_NUMBER="${VERSION//[^0-9]}"

# 使用sed替换manifest.js中的占位符
sed -i "s/1\.0\.0/$VERSION/g" $MANIFEST_FILE
sed -i "s/100/$BUILD_NUMBER/g" $MANIFEST_FILE

cd "${WORKDIR}/repo/dist/build/app" || exit
# 打包
zip -q -r "app.wgt" ./
mkdir -p "${WORKDIR}/release/${LAST_VERSION}"
mv "app.wgt" "${WORKDIR}/release/${LAST_VERSION}"

echo "[UNI-APP] 热更新文件打包完成"
echo "[UNI-APP] 文件储存位置：${WORKDIR}/release/${LAST_VERSION}/app.wgt"